﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data.OleDb;

namespace CityGames
{
    public class Empleado
    {
        private string nombre;
        private string apellidos;
        private string dni;
        private string telefono;
        private string e_mail;
        private string sexo;
        private string tipo;
        private string password;
        static private CADEmpleado cadEmpleado = new CADEmpleado();

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public string Apellidos
        {
            get { return apellidos; }
            set { apellidos = value; }
        }

        public string Dni
        {
            get { return dni; }
            set { dni = value; }
        }

        public string Telefono
        {
            get { return telefono; }
            set { telefono = value; }
        }

        public string E_mail
        {
            get { return e_mail; }
            set { e_mail = value; }
        }

        public string Sexo 
        {
            get { return sexo; }
            set { sexo = value; }
        }

        public string Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

  
       
        /// <summary> 
        /// Constructor por defecto de la clase Empleado.
        /// </summary>
        public Empleado()
        {
            try
            {
                nombre = "";
                apellidos = "";
                dni = "";
                sexo = "";
                telefono = "";
                e_mail = "";
                tipo = "";
                password = "";
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }

     
        /************************************************** Funciones de Gonzalo **************************************************/

        public DataSet ObtenerEmpleadosFiltrados(string nombre, string apellidos, string dni, string sexo, string tipo, int desde, int hasta)
        {
            DataSet resultado = new DataSet();

            try
            {
                resultado = cadEmpleado.FiltrarEmpleados(nombre, apellidos, dni, sexo, tipo, desde, hasta);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

  
        public bool AltaEmpleado()
        {
            bool resultado = true;

            try
            {
                resultado = cadEmpleado.AltaEmpleado(nombre, apellidos, dni, sexo, telefono, e_mail, password, tipo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }


        public int ObtenerNumeroDeEmpleadosFiltrados(string nombre, string apellidos, string dni, string sexo, string tipo)
        {
            int resultado = 0;

            try
            {
                resultado = cadEmpleado.ObtenerNumeroDeEmpleadosFiltrados(nombre, apellidos, dni, sexo, tipo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

      
        public bool ExisteEmpleado(string dni)
        {
            bool resultado = true;
            try
            {
                resultado = cadEmpleado.ExisteEmpleado(dni);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }


        public bool ActualizarEmpleado(DataSet empleados, string nombre, string apellidos, string dni, string sexo, string tipo, int desde, int hasta)
        {
            bool resultado = false;

            try
            {
                resultado = cadEmpleado.ActualizarEmpleado(empleados, nombre, apellidos, dni, sexo, tipo, desde, hasta);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }

        public bool BorrarEmpleado(string dni)
        {
            bool resultado = false;

            try
            {
                resultado = cadEmpleado.BorrarEmpleado(dni);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }

        public bool UpdateEmpleado(DataRow dr)
        {
            bool resultado = false;

            try
            {
                resultado = cadEmpleado.UpdateEmpleado(dr);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;

        }
        /************************************************** Fin Funciones de Gonzalo **************************************************/

        

        /*__________________________________Función de Mirellys______________________________*/
        /// <summary> 
        /// Función que obtiene la contraseña de un empleado para validar su acceso al sistema
        /// </summary>
        /// /// <returns>String resultado</returns>
        public string getPassword()
        {
            string resultado="";

            try
            {
                resultado = cadEmpleado.getPassword(Dni);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /// <summary>
        /// Función que obtiene el tipo de empleado que es una persona segun el dni que recibe
        /// </summary>
        /// <returns>entero tipo de empleado</returns>
        public string ObtenerTipoEmpleado()
        {
            string resultado = "";

            try
            {
                resultado = cadEmpleado.ObtenerTipoEmpleado(dni);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /// <summary>
        /// Funcion Existe Empleado que me dice dado un empleado de la entidad de negocio, si existe o no
        /// </summary>
        /// <returns>Retorna verdadero en caso de que exista el empleado, falso en caso contrario</returns>
        public bool ExisteEmpleadoParaWeb()
        {
            bool resultado = true;
            try
            {
                resultado = cadEmpleado.ExisteEmpleado(dni);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /************************************************** Funciones de Marcos **************************************************/

        public bool EsAdministrador(string dniEmpleado)
        {
            bool resultado = false;

            try
            {
                resultado = cadEmpleado.EsAdministrador(dniEmpleado);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        public bool EsModerador(string dniEmpleado)
        {
            bool resultado = false;

            try
            {
                resultado = cadEmpleado.EsModerador(dniEmpleado);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return resultado;
        }

        /************************************************** Fin Funciones de Marcos **************************************************/
    }
}
